#ifndef HOUGH_PLUGIN_H
#define HOUGH_PLUGIN_H

#include "hough_plugin_global.h"
#include "cvplugininterface.h"

namespace Ui {
    class PluginGui;
}

class HOUGH_PLUGINSHARED_EXPORT Hough_Plugin: public QObject, public CvPluginInterface
{
    Q_OBJECT
    Q_PLUGIN_METADATA(IID "com.opencv.cvplugininterface")
    Q_INTERFACES(CvPluginInterface)
public:
    Hough_Plugin();
    ~Hough_Plugin();

    QString title();
    QString version();
    QString description();
    QString help();
    void setupUi(QWidget *parent);
    void processImage(const cv::Mat &inputImage, cv::Mat &outputImage);
    void init(bool a);

signals:
    void updateNeeded();
    void errorMessage(QString msg);
    void infoMessage(QString msg);

private slots:
    void on_mainTab_currentChanged(int index);

    void on_HoughLinesRadio_toggled(bool checked);

    void on_HoughLinesPRadio_toggled(bool checked);

    void on_lineRhoSpin_valueChanged(double arg1);

    void on_lineThetaSpin_valueChanged(double arg1);

    void on_lineThreSpin_valueChanged(int arg1);

    void on_lineMInlineLenSpin_valueChanged(double arg1);

    void on_lineMaxLinegapSpin_valueChanged(double arg1);

    void on_circleDpSpin_valueChanged(double arg1);

    void on_circleMindstSpin_valueChanged(double arg1);

    void on_circleP1Spin_valueChanged(double arg1);

    void on_circleP2Spin_valueChanged(double arg1);

    void on_circleMinRSpin_valueChanged(int arg1);

    void on_circleMaxRSpin_valueChanged(int arg1);

    void on_cannyTh1Spin_valueChanged(int arg1);

    void on_cannyTh2Spin_valueChanged(int arg1);

    void openURL(QString url);

private:
    Ui::PluginGui *ui;

};

#endif // HOUGH_PLUGIN_H
